package com.atguigu.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * ClassName:User
 * Package:com.atguigu.pojo
 * Description:
 *
 * @Author 应永豪
 * @Create 2024/4/21 13:37
 * @Version 1.0
 */
@Data
@TableName("user")//指明该类对应数据库里的哪张表
public class User implements Serializable {
    public static final Long serialVersionUID = 1L;
    @TableId(type = IdType.AUTO)//注明是自增主键
    @JsonProperty("user_id")//用于进行json属性的格式化，这样子相当于从前端接收到的json对应的属性key
    //要是user_id，后端返给前端的json_key也是user_id
    private Integer userId;
    @Length(min = 6)
    private String userName;
    @NotBlank
    //@JsonIgnore  这个注解会直接屏蔽掉前后端该字段的交互，即不能从前端接收到这个字段，也不会返回
    //给前端这个字段，所以一般很少使用
    @JsonInclude(JsonInclude.Include.NON_NULL)
    //这个注解的意思是，如果这个字段的值不为null的时候，前后端正常交互，如果为null，后端返给前端
    //的时候不生成这个字段的json，所以只要在后端将该字段的值设置成null，就不会返回给前端了
    private String password;
    @NotBlank
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String userPhonenumber;
}
